背景在比较同一个数据源,是RTMP播放延迟低还是RTSP延迟低之前,我们先看看RTMP和RTSP的区别,我们知道,RTMP(Real-Time Messaging Protocol)和RTSP(Real 它最初由Adobe Systems设计,用于在Flash播放器和流媒体服务器之间传输音频、视频和数据。RTMP以二进制形式传输数据,具有低延迟和高效传输的特点。 应用范围RTMP:RTMP因其低延迟和高效传输的特点,广泛应用于需要高性能实时流媒体传输的场景,如直播、视频聊天等。 ,用我们的RTMP推送、轻量级RTSP服务、RTMP|RTSP播放器,延迟基本上相差无几,可见,配好的推拉流服务模块,尤其关键。 单就延迟来看,如果好的RTMP或RTSP播放,二者差异不大,主要是看实际场景。以上是大概的比较,感兴趣的开发者,可以单独跟我沟通探讨。
背景我们看过了太多介绍RTSP、RTMP播放相关的技术资料,大多接口设计简约,延迟和扩展能力也受到一定的局限,好多开发者希望我们能从接口设计的角度,大概介绍下大牛直播SDK关于RTMP、RTSP播放器开发设计 RTSP TCP-UDP模式设置、超时时间设置或模式切换有的RTSP服务器或摄像机,只支持RTSP TCP模式或者UDP模式,这个时候,默认设置TCP、UDP模式就至关重要,此外,我们还设计支持如TCP 低延迟模式低延迟模式下,设置buffer time为0,延迟更低,适用于比如需要操控控制的超低延迟场景下。 相关接口设计如下:player_api_.SetRenderScaleMode(player_handle_, btn_check_render_scale_mode_.GetCheck() == BST_CHECKED 一个好的播放器,特别是要满足低延迟稳定的播放(毫秒级延迟),需要注意的点远不止如此,感兴趣的开发者,可以参考blog其他文章。
技术背景 实际上,我们在2015年做Android平台RTSP、RTMP播放模块的时候,第一版就支持了多实例播放,因为SDK设计比较灵活,做个简单的player实例封装即可实现多实例播放(Android 1 : 0); //设置RTSP超时时间 int rtsp_timeout = 10; lib_player_.SmartPlayerSetRTSPTimeout(handle, rtsp_timeout ); //设置RTSP TCP/UDP模式自动切换 int is_auto_switch_tcp_udp = 1; lib_player_.SmartPlayerSetRTSPAutoSwitchTcpUdp when playback RTSP stream.. 毫秒级延迟,完全满足对延迟、稳定性要求苛刻的场景下。感兴趣的开发者,可以单独和我沟通。
好多开发者在QT环境下实现RTMP或RTSP播放时,首先考虑到的是集成VLC,集成后,却发现VLC在延迟、断网重连、稳定性等各个方面不尽人意,无法满足上线环境需求。 本文以调用大牛直播SDK(官方)的Windows平台播放端SDK为例,介绍下如何在QT下实现低延迟的RTMP|RTSP播放器,废话不多说,先上图: QTPlayer.png 大牛直播SDK有MFC的demo OpenPlayerHandle(url, is_rtsp_tcp_mode, is_mute)) return false; player_api_->SetBuffer(player_handle ; player_api_->SetRTSPTcpMode(player_handle, is_rtsp_tcp_mode ? play->OnWindowSize(widgets.at(i)->width(), widgets.at(i)->height()); } } } 以上是QT环境下集成个低延迟的
提供RTSP TCP/UDP模式设置及自动切换功能,适应不同网络环境,确保播放稳定性。 1.1.2 性能优化特性 内置低延迟模式,可将延迟控制在毫秒级别,满足实时性要求高的场景。 Unity播放器架构设计2.1 核心模块划分2.1.1 PlayerInstance模块 管理单个播放实例的生命周期,负责视频播放、录制及视频帧回调。 低延迟播放技术实现3.1 网络优化策略3.1.1 缓冲时间设置 将缓冲时间设置在几十毫秒到几百毫秒之间,减少数据缓冲带来的延迟,同时保证播放稳定性。 4.2 低延迟关键参数配置4.2.1 网络协议优化 RTSP模式选择:默认使用UDP(NT_SP_SetRTSPTcpMode设为0)以减少握手延迟,若网络不稳定则开启TCP/UDP自动切换(NT_SP_SetRtspAutoSwitchTcpUdp 快速启动与低延迟模式: NT_SP_SetFastStartup(handle, 1); // 跳过CDN缓存GOP NT_SP_SetLowLatencyMode(handle, 1); //
实现RTSP摄像头数据转RTMP推送到服务器,可以用第三方库或者工具实现,总体设计架构如下:图片一个好的转发模块,首先要低延迟! 其次足够稳定、灵活、有状态反馈机制、资源占用低,跨平台,最好以接口形式提供,便于第三方系统集成,整体功能设计如下:1. 拉流:通过RTSP直播播放SDK的数据回调接口,拿到音视频数据;2. 您可以使用以下命令行参数:ffmpeg -i rtsp://[摄像头地址]/[流媒体地址] -f flv rtmp://[服务器地址]/[直播频道]其中,rtsp://[摄像头地址]/[流媒体地址] 拉流:拉流和播放有些类似,但不需要播放(也就是说不要解码,资源消耗非常低),在做过基础的参数配置之后(对应demo里面OpenPullHandle()),设置音视频数据回调,然后调用StartPullStream 需要确保系统具有足够的处理能力和带宽,以避免延迟或丢帧等问题。
hls流(如果可以忍受几秒甚至十几秒延迟的话)。 本文基于大牛直播SDK https://github.com/daniulive/SmarterStreaming 现有RTSP、RTMP播放接口的基础上,二次封装,扩展了ocx控件,用于IE浏览器下的低延迟 页面展示 图一: 图二: 设计注意事项: 1. 接口透传,不再赘述,注意数据类型即可; 2. ULONG NT_SetLowLatencyMode(LONG mode); 设置是否低延迟模式播放; 13. OpenPlayer(); } var obj = document.getElementById("SmartPlayerActiveX"); //设置是否启用低延迟模式
:全景视频可以用来展示建筑设计的或室内装潢,使客户能够感受到真实的的效果;文旅导览:全景视频可以用来展示旅游景点或城市,使游客能够感受到身临其境的感觉。 在Unity3D平台上实现全景实时RTMP或RTSP流渲染,可以通过以下方式:获取全景视频数据源:首先,需要拉取RTMP或RTSP流数据,解码后,把RGB或YUV数据,回调到unity,从而获取到全景视频流数据 技术实现图片本文以大牛直播SDK的RTMP推送端作为数据采集,获取全景窗体数据后,编码打包推送到RTMP服务,或启动个轻量级RTSP服务,对外提供个RTSP的拉流URL。 1 : 0); //设置是否启用低延迟模式 //设置旋转角度(设置0, 90, 180, 270度有效,其他值无效) int rotate_degrees = 0; 与此同时,Unity全景实时播放,需要有非常高的延迟要求和性能要求,特别是全景数据源,分辨率和码率都非常高,对解码效率和解码后的数据拷贝投递,提了更高的要求。
传统的单路播放器已无法满足此类需求,因此开发一个多路 RTSP 播放器显得尤为必要。该播放器主要面向以下场景: 视频监控中心 :对多个监控摄像头进行实时监控,要求低延迟、高稳定性。 (get(), 1);}(二)低延迟模式为了满足实时性要求较高的场景,可以启用低延迟模式。 在 configurePlayer 方法中设置低延迟模式。 五、总结与展望通过以上基于大牛直播 SDK 的多路 RTSP 播放器的实现与解析,我们深入了解了其架构设计、关键功能模块以及性能优化策略。 性能优化 :采用硬件加速、低延迟模式等技术手段,提高播放性能和实时性。 良好的资源管理 :合理管理播放器的生命周期和资源,避免内存泄漏和资源浪费。
传统方式如使用摄像头采集、调用 ffmpeg 解码、使用 OpenCV 的 cv2.VideoCapture(),往往面临: ❌ 帧率不稳、延迟高; ❌ 不支持 RTSP/RTMP 等协议或兼容性差; 为了解决这一关键问题,本文引入 大牛直播SDK(Daniu Live SDK) ——一个专为高性能实时视频流接入设计的跨平台模块,支持 RTSP/RTMP 拉流、YUV/RGB 帧级回调、硬件解码与同步控制 本文将围绕 “大牛直播SDK × Python × OpenCV” 这一组合,从架构设计、接口调用、图像处理实战到典型应用场景,全面介绍如何实现: ✅ 实时视频接入 ✅ 高效图像分析 ✅ 目标识别与追踪 技术链路RTSP摄像头 → 大牛直播SDK拉流 → YOLOv5识别人形目标 → 置信度>0.8 → 调用报警接口(如 MQTT / HTTP) 技术亮点 视频延迟 < 200ms; 实时叠加识别框 /本地流,低延迟、高稳定帧级回调层RGB/YUV 输出精准对接 Python/AI 模型,毫秒级响应图像分析层OpenCV + YOLO/Haar支持人脸识别、目标检测、行为分析等数据联动层HTTP/MQTT
国产操作系统具有诸多好处: 信息安全与可控性提升:国产操作系统在设计和开发过程中,可以更加注重国内的信息安全标准和需求,通过自主研发,能够避免对外部系统的过度依赖,降低数据泄露和信息安全风险。 在发布国产操作系统|Linux平台的RTMP|RTSP直播播放SDK之前,大牛直播SDK在Windows、Android、iOS平台已经有了非常成熟的技术积累,功能齐全、稳定性高、超低延迟、超低资源占用 Linux原生的RTSP、RTMP播放模块这里我们不做赘述,本文主要讲的是如何在Linux平台构建Unity下的RTSP和RTMP低延迟直播播放。 播放模块,拉流解码延迟非常低,数据投递效率非常高,无图无真相:Linux平台,我们是回调的YUV的数据,也就是 NT_SP_E_VIDEO_FRAME_FROMAT_I420: /*定义视频帧图像格式 1 : 0); //设置是否启用低延迟模式//设置旋转角度(设置0, 90, 180, 270度有效,其他值无效)int rotate_degrees = 0;NTSmartPlayerSDK.NT_SP_SetRotation
本文是来自WWDC(苹果全球开发者大会) 2019的演讲,演讲的作者Roger Pantos,HLS的技术主管,本次演讲主题是介绍低延迟HTTP实时流(Low-Latency HLS)的实现和效果以及如何使用低延迟 在演讲的开始,Roger首先描述了低延迟对于体育直播、新闻、即时互动游戏广播以及颁奖典礼和其他社交媒体活动等的重要性。 介绍了低延迟HLS的设计目标是1-2秒,并且具有速率适配、加密、广告、元数据、向后兼容等功能。 然后Roger介绍了低延迟HLS如何实现上述的目标,与之前的HLS相比有5大变化:减少发布延时、优化段发现、消除段往返、减少播放列表传输开销、快速切换层。随后介绍了完成这5项变化的细节。 接着Roger展示了使用低延迟HLS视频通话的延迟,在AppleTV上美国用户与澳大利亚用户在视频通话时的延迟低于2秒。 最后Roger介绍了对于开发者来说,如何使用低延迟HLS进行项目开发。
端到端 RTSP 低延迟链路。 技术设计跨平台内网超低延迟直播的创新引擎为满足安防视频监控、教育培训、工业生产、医疗健康、智能物联网等内网超低延迟需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了跨平台(Windows|Linux 性能优化低延迟:针对内网环境进行了深度优化,在数据传输过程中能够有效减少延迟,确保音视频数据的实时性,特别适用于对实时性要求较高的内网无纸化和电子教室等场景,师生互动或信息共享几乎零时差,极大提升了用户体验 低时延播放链路:端到端时序控制、可配置 JitterBuffer 与缓冲策略,延迟可达 100~200 ms 。 (3)端到端的低延迟链路:短路径、无冗余、可控在规范化 RTP 流 + zero-cache 服务端模式下, 大牛直播SDK 的典型端到端延迟能保持在100-200ms。
技术探讨自2017年我们发布跨平台的低延迟Unity下的RTSP|RTMP直播播放器后,Unity下的直播体验有了质的提升,特别是RTMP,从大家认知里面的几秒钟,直接缩减到100-300ms,满足了绝大多数场景下低延迟的技术诉求 今天就Unity下的RTSP|RTMP的低延迟播放,从以下几个维度,抛砖引玉,做个探讨: 选择合适的播放插件 Unity下的RTSP|RTMP低延迟播放,业内想到最多的是大牛直播SDK的SmartPlayer 低延迟模式:如果插件或 SDK 提供了低延迟模式的选项,一定要开启该模式。不过,有些情况下开启低延迟模式可能会牺牲一定的视频质量或稳定性,需要进行权衡。 tcp-udp模式设置、rtsp超时时间设置、低延迟模式设置等)。 要求非常高,可以选择合适的低延迟RTSP或RTMP播放插件、优化播放参数设置、优化网络环境、优化代码和渲染流程。
技术背景VR(虚拟现实技术)给我们带来身临其境的视觉体验,广泛的应用于城市规划、教育培训、工业仿真、房地产、水利电力、室内设计、文旅、军事等众多领域,常用的行业比如:教育行业:VR头显可以用于教育培训, 技术实现如何在VR头显实现RTMP或RTSP播放? 1 : 0); //设置是否启用低延迟模式 NT_U3D_SetMute(player_handle_, is_mute_ ? (player_handle_, rtsp_timeout); //设置RTSP超时时间 int is_auto_switch_tcp_udp ,可实现毫秒级的延迟,可满足大多数有交互诉求的技术场景,此外,如果头显端支持硬解码的话,可以优先考虑硬解码。
这次将介绍的是使用开放源代码工具的低延迟DASH流。 首先Bo介绍了低延迟DASH流是什么,其中,一个低延迟流,从编码器屏幕到播放器屏幕之间的延迟必须要低于5秒;视频片段会被分割成许多的块来进行编码传输;且低延迟的特性也决定了它在传输路径上不应有额外的缓冲 Bo还介绍了在低延迟流中的前人工作,DVB低延迟DASH:使用GPAC软件实现的GPAC低延迟DASH;苹果的低延迟HLS,使用的是苹果服务器和IOS的音视频播放器,以及社区驱动的LHLS。 随后Bo更详细地介绍了各个环节的硬件与软件参数细节与代码设计,并现场展示了demo。 最后Bo讨论了一些低延迟DASH的潜在问题,首先低延迟DASH的灵活性比传统的低延迟流要差;块的大小和延迟之间也存在着交换;低延迟DASH只支持HTTP/1.1。 最后附上演讲视频:
在视频播放应用的开发中,如何有效地管理多个 RTSP|RTMP流实例是一个挑战。 尤其是在 Android 上开发高性能、低延迟的多实例 RTSP|RTMP 播放器时,涉及到资源管理、线程同步和回调事件处理等多个层面的考虑。 播放器需要具备以下特点: 多实例管理:能够同时管理多个 RTSP|RTMP播放器实例,确保每个实例的生命周期独立。 低延迟播放:优化播放器的启动时间和播放延迟。 , Context context, EventListener listener) { this.lib_player_ = lib_player; this.context 总结与展望通过将 LibPlayerWrapper 设计为一个独立的播放器实例包装类,结合大牛直播SDK的JNI层提供的底层播放控制接口,我们能够实现一个功能完备的多实例 RTSP|RTMP播放器。
这种设计意味着: 零额外部署:无需独立流媒体服务器,简化系统架构 跨平台一致性:在 PC、服务器、移动端、嵌入式设备上统一能力 低延迟链路:采集→编码→分发全程本地化,避免公网绕行带来的延迟 灵活适配场景 设计背景:内网低延迟传输的架构革新在典型的实时视频系统中,推送端采集到的音视频数据通常会先发送至独立的流媒体服务器(如 Wowza、Nginx-RTMP 等),由该服务器负责协议转换、数据分发与客户端连接管理 3.1 架构设计理念 内置服务内核化:将传统外部RTSP服务器功能直接集成到推送端SDK中,形成内核级服务能力。 轻量级RTSP服务:推流端直连客户端,消除中间节点,在内网低延迟模式下,配合我们的RTSP播放器,可轻松实现 100~250ms 的端到端延迟。 既需内网低延迟又要云端扩展 → 采用混合架构(轻量级RTSP服务+云SDK),既保留低延迟链路,又能获得云端增值功能。 AI驱动业务 → 推荐本地部署为核心,云端做辅助,确保推理延迟可控。 7.
随着VR类、游戏类场景的快速发展,开发者对Unity3d低延迟的直播需求量越来越大,前两年,大牛直播SDK发布了Windows平台、Android平台和iOS平台的Unity3d RTMP和RTSP的播放 Native RTSP或RTSP直播播放SDK回调RGB/YUV420/NV12等其中的一种未压缩的图像格式;
2. _.Call<int>("SetFastStartup", handle, is_fast_startup);
}
///
评估维度与权衡框架 端到端延迟预算 不仅关注“首屏秒开”时间,还要衡量稳定播放阶段的 P50/P95 延迟指标,以及延迟波动幅度。低延迟并不等于牺牲稳定性,理想状态是在波动范围内持续追实时。 不足: 在深度低延迟调优上空间有限,内部缓冲与同步策略可控性不高。 弱网环境下,追帧/丢帧策略、抖动缓冲调整不够精细,易出现延迟累积。 适用场景:快速原型验证、功能优先的单流播放或低并发业务,对延迟和极限稳定性要求不高的项目。 低延迟架构要点(Windows 端实践经验)4.1 网络与缓冲策略 RTSP 传输模式:优先选择内网或专线环境以确保链路稳定;在公网或存在丢包风险时,推荐使用 TCP 传输,并在必要时启用 UDP → 刷新与呈现:在呈现阶段控制帧延迟(如设置低帧延迟队列),并结合可等待的同步对象(Waitable Object)确保帧输出节奏可控。